﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using AccesoDatos.Manejador;
using AccesoDatos.Objetos;
using Conexion;
using System.Windows.Forms;

namespace Autorizacion_facturas_caja
{
    public partial class frmPrestamos_Captura : Form
    {
        
        objRH obj1 = new objRH();
        objPrestamos obj2 = new objPrestamos();
        Manejador_Prestamos_Captura Man = new Manejador_Prestamos_Captura();

        frmPrestamos_enAutorizacion frm = new frmPrestamos_enAutorizacion();
        int bandera1;
        int forma1;
        ClsConexion conexion = new ClsConexion();
        #region funciones
        
        public frmPrestamos_Captura(objRH obj3, int bandera, int forma, objPrestamos obj4)
        {
           InitializeComponent();
           ToolTip1();
           obj1 = obj3;
           mostrarDatosLabels();
           bandera1 = bandera;
           forma1 = forma;
   
           if (forma == 1)
           {
               if (bandera1 == 1) lblNoCumple.Visible = false;
               else lblNoCumple.Visible = true;
               btnGuardarMod.Visible = false;
           }
           else {
               obj2=obj4;
               lblNoCumple.Visible = false;
               btnGuardar.Visible = false;
               btnLimpiar.Visible = false;
               mostrarDatos();
           }

        }

        public void obtenercampos() {

            obj2.Fecha_Solicitud = dteFecha_Solicitud.Value;
            obj2.Tipo_prestamo = cmbTipo.SelectedItem.ToString();
            obj2.Cantidad_Solicitud = txtCantidad.Text.Trim();
            obj2.Descripcion = txtDescripcion.Text.Trim();
            obj2.Prioridad = cmbPrioridad.SelectedItem.ToString();
        
        }
        public void limpiar() {

           dteFecha_Solicitud.Text="";
           cmbTipo.Text="";
           txtCantidad.Text="";
           txtDescripcion.Text="";
           cmbPrioridad.Text = "";
        }
        public bool validar() { 
       
            bool res=false;
            if (obj1 != null && dteFecha_Solicitud.Text != "" && cmbTipo.Text != "" && txtCantidad.Text != "" ) return true;
        
            return res;
        }
        private void ToolTip1()
        {
            ToolTip toolTip1 = new ToolTip();
            toolTip1.ShowAlways = true;
            toolTip1.SetToolTip(this.btnGuardar, "GUARDAR");
            toolTip1.SetToolTip(this.btnCancelar, "CANCELAR");
            toolTip1.SetToolTip(this.btnLimpiar, "LIMPIAR");
            toolTip1.SetToolTip(this.btnGuardarMod, "GUARDAR MODIFICACIÓN");
        }
        public void mostrarDatosLabels() {

            double maximo, sueldo;
            sueldo=Convert.ToDouble(obj1.Sueldo_Mensual);
            lblEmpleado.Text = obj1.Nombre_completo;
            lblDepartamento.Text = obj1.Departamento;
            lblPuesto.Text = obj1.Puesto;
            lblSueldo.Text = String.Format("$ {0:###,##0.00}", sueldo); 
            maximo = Convert.ToDouble(obj1.Sueldo_Mensual)*1.5;
            obj2.Cantidad_maxima = maximo;
            lblMaximo.Text = String.Format("$ {0:###,##0.00}" ,maximo);
        }
        public void mostrarDatos() {

            double cant;
            cant = Convert.ToDouble(obj2.Cantidad_Solicitud);
            dteFecha_Solicitud.Value=obj2.Fecha_Solicitud;
            cmbTipo.Text=obj2.Tipo_prestamo;
            txtCantidad.Text = String.Format("{0:###,##0.00}", cant);
            txtDescripcion.Text=obj2.Descripcion;
            cmbPrioridad.Text =obj2.Prioridad;
        }
        public bool ValidarSolicitud()
        {
            if (Convert.ToDouble(obj2.Cantidad_Solicitud) > obj2.Cantidad_maxima  || forma1==2 || bandera1==2 )
            {
                Form1 login = new Form1();
                login.ShowDialog();
                if (conexion.Usuario != null) return true;
                else return false;
            }
            return true;
        }

        #endregion 
  
        #region botones
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                obtenercampos();
                if (validar())
                {
                    //if (ValidarSolicitud())
                    //{
                        bool res = Man.GuardaPrestamo(obj1.Id_Empleado, obj2.Fecha_Solicitud, obj2.Tipo_prestamo, obj2.Descripcion, obj2.Cantidad_Solicitud, obj2.Prioridad);
                        switch (res)
                        {
                            case true:
                                MessageBox.Show("SE GUARDO CORRECTAMENTE","AVISO");
                                Close();
                                break;
                            case false:
                                MessageBox.Show("ERROR CONEXION","ALERTA");
                                break;
                        }
                    //}else { MessageBox.Show("OPERACIÓN CANCELADA","ALERTA"); }
                }else { MessageBox.Show("FALTAN DATOS POR CAPTURAR", "ALERTA"); }
            }
            catch { MessageBox.Show("ERROR AL GUARDAR","ALERTA"); }
        }

        private void btnGuardarMod_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("SEGURO DE GUARDAR LA MODIFICACIÓN", "ALERTA", MessageBoxButtons.OKCancel) == DialogResult.OK)
                try
                {
                    obtenercampos();
                    if (validar())
                    {
                     
                        if (ValidarSolicitud())
                        {
                            bool res = Man.ModificaPrestamo(obj2.Id_Prestamo, obj2.Fecha_Solicitud, obj2.Tipo_prestamo, obj2.Descripcion, obj2.Cantidad_Solicitud, obj2.Prioridad);
                            switch (res)
                            {
                                case true:
                                    MessageBox.Show("SE GUARDO CORRECTAMENTE", "AVISO");
                                    Close();
                                    break;
                                case false:
                                    MessageBox.Show("ERROR CONEXION", "ALERTA");
                                    break;
                            }
                           
                        }else { MessageBox.Show("OPERACIÓN CANCELADA","ALERTA"); }

                    }else { MessageBox.Show("FALTAN CAMPOS POR LLENAR","ALERTA"); }
                }
                catch { MessageBox.Show("ERROR AL GUARDAR LOS DATOS","ALERTA"); }   
            
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            limpiar();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        #endregion 

        private void txtCantidad_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

       
    }
}
